package com.module.app.emoji;

import android.content.Context;
import android.content.res.Resources;
import android.text.Spannable;
import android.text.Spanned;

import com.module.app.emoji.bean.Emoji;
import com.module.app.emoji.bean.Emoji;
import com.module.base.utils.CommonUtils;
import com.module.base.utils.DisplayUtils;
import com.module.base.widget.span.CenteredImageSpan;
import com.module.app.R;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 表情处理
 */
public class EmojiUtils {

    /**
     * 表情管理
     */
    public static Map<String, Emoji> EMOJI_MAP = new LinkedHashMap<>();

    /**
     * 头条 表情管理
     */
    public static Map<String, Emoji> EMOJI_MAP_TT;

    static {
        EMOJI_MAP_TT = new LinkedHashMap<>();
        EMOJI_MAP_TT.put("[捂脸]", new Emoji("[捂脸]", R.mipmap.emoji_tt_wulian));
        EMOJI_MAP_TT.put("[大笑]", new Emoji("[大笑]", R.mipmap.emoji_tt_daxiao));
        EMOJI_MAP_TT.put("[龇牙]", new Emoji("[龇牙]", R.mipmap.emoji_tt_ziya));
        EMOJI_MAP_TT.put("[爱慕]", new Emoji("[爱慕]", R.mipmap.emoji_tt_aimu));
        EMOJI_MAP_TT.put("[流泪]", new Emoji("[流泪]", R.mipmap.emoji_tt_liulei));
        EMOJI_MAP_TT.put("[害羞]", new Emoji("[害羞]", R.mipmap.emoji_tt_haixiu));
        EMOJI_MAP_TT.put("[灵光一闪]", new Emoji("[灵光一闪]", R.mipmap.emoji_tt_lingguangyishan));
        EMOJI_MAP_TT.put("[发怒]", new Emoji("[发怒]", R.mipmap.emoji_tt_fanu));
        EMOJI_MAP_TT.put("[抠鼻]", new Emoji("[抠鼻]", R.mipmap.emoji_tt_koubi));
        EMOJI_MAP_TT.put("[酷拽]", new Emoji("[酷拽]", R.mipmap.emoji_tt_kuzhuai));
        EMOJI_MAP_TT.put("[耶]", new Emoji("[耶]", R.mipmap.emoji_tt_ye));
        EMOJI_MAP_TT.put("[可爱]", new Emoji("[可爱]", R.mipmap.emoji_tt_keai));
        EMOJI_MAP_TT.put("[机智]", new Emoji("[机智]", R.mipmap.emoji_tt_jizhi));
        EMOJI_MAP_TT.put("[打脸]", new Emoji("[打脸]", R.mipmap.emoji_tt_dalian));
        EMOJI_MAP_TT.put("[笑哭]", new Emoji("[笑哭]", R.mipmap.emoji_tt_xiaoku));
        EMOJI_MAP_TT.put("[我想静静]", new Emoji("[我想静静]", R.mipmap.emoji_tt_woxiangjingjing));
        EMOJI_MAP_TT.put("[泪崩]", new Emoji("[泪崩]", R.mipmap.emoji_tt_leiben));
        EMOJI_MAP_TT.put("[赞]", new Emoji("[赞]", R.mipmap.emoji_tt_zan));
        EMOJI_MAP_TT.put("[祈祷]", new Emoji("[祈祷]", R.mipmap.emoji_tt_qidao));
        EMOJI_MAP_TT.put("[玫瑰]", new Emoji("[玫瑰]", R.mipmap.emoji_tt_meigui));
        EMOJI_MAP_TT.put("[微笑]", new Emoji("[微笑]", R.mipmap.emoji_tt_weixiao));
        EMOJI_MAP_TT.put("[哈欠]", new Emoji("[哈欠]", R.mipmap.emoji_tt_haqian));
        EMOJI_MAP_TT.put("[震惊]", new Emoji("[震惊]", R.mipmap.emoji_tt_zhenjing));
        EMOJI_MAP_TT.put("[送心]", new Emoji("[送心]", R.mipmap.emoji_tt_songxin));
        EMOJI_MAP_TT.put("[困]", new Emoji("[困]", R.mipmap.emoji_tt_kun));
        EMOJI_MAP_TT.put("[what]", new Emoji("[what]", R.mipmap.emoji_tt_what));
        EMOJI_MAP_TT.put("[泣不成声]", new Emoji("[泣不成声]", R.mipmap.emoji_tt_qibuchengsheng));
        EMOJI_MAP_TT.put("[小鼓掌]", new Emoji("[小鼓掌]", R.mipmap.emoji_tt_xiaoguzhang));
        EMOJI_MAP_TT.put("[大金牙]", new Emoji("[大金牙]", R.mipmap.emoji_tt_dajinya));
        EMOJI_MAP_TT.put("[偷笑]", new Emoji("[偷笑]", R.mipmap.emoji_tt_touxiao));
        EMOJI_MAP_TT.put("[石化]", new Emoji("[石化]", R.mipmap.emoji_tt_shihua));
        EMOJI_MAP_TT.put("[思考]", new Emoji("[思考]", R.mipmap.emoji_tt_sikao));
        EMOJI_MAP_TT.put("[吐血]", new Emoji("[吐血]", R.mipmap.emoji_tt_tuxie));
        EMOJI_MAP_TT.put("[可怜]", new Emoji("[可怜]", R.mipmap.emoji_tt_kelian));
        EMOJI_MAP_TT.put("[嘘]", new Emoji("[嘘]", R.mipmap.emoji_tt_xu));
        EMOJI_MAP_TT.put("[撇嘴]", new Emoji("[撇嘴]", R.mipmap.emoji_tt_piezui));
        EMOJI_MAP_TT.put("[黑线]", new Emoji("[黑线]", R.mipmap.emoji_tt_heixian));
        EMOJI_MAP_TT.put("[鼾睡]", new Emoji("[鼾睡]", R.mipmap.emoji_tt_hanshui));
        EMOJI_MAP_TT.put("[雾霾]", new Emoji("[雾霾]", R.mipmap.emoji_tt_wumai));
        EMOJI_MAP_TT.put("[奸笑]", new Emoji("[奸笑]", R.mipmap.emoji_tt_jianxiao));
        EMOJI_MAP_TT.put("[憨笑]", new Emoji("[憨笑]", R.mipmap.emoji_tt_hanxiao));
        EMOJI_MAP_TT.put("[抓狂]", new Emoji("[抓狂]", R.mipmap.emoji_tt_zhuakuang));
        EMOJI_MAP_TT.put("[惊呆]", new Emoji("[惊呆]", R.mipmap.emoji_tt_jingdai));
        EMOJI_MAP_TT.put("[钱]", new Emoji("[钱]", R.mipmap.emoji_tt_qian));
        EMOJI_MAP_TT.put("[吻]", new Emoji("[吻]", R.mipmap.emoji_tt_wen));
        EMOJI_MAP_TT.put("[恐惧]", new Emoji("[恐惧]", R.mipmap.emoji_tt_kongju));
        EMOJI_MAP_TT.put("[笑]", new Emoji("[笑]", R.mipmap.emoji_tt_xiao));
        EMOJI_MAP_TT.put("[快哭了]", new Emoji("[快哭了]", R.mipmap.emoji_tt_kuaikule));
        EMOJI_MAP_TT.put("[翻白眼]", new Emoji("[翻白眼]", R.mipmap.emoji_tt_fanbaiyan));
        EMOJI_MAP_TT.put("[皱眉]", new Emoji("[皱眉]", R.mipmap.emoji_tt_zhoumei));
        EMOJI_MAP_TT.put("[擦汗]", new Emoji("[擦汗]", R.mipmap.emoji_tt_cahan));
        EMOJI_MAP_TT.put("[红脸]", new Emoji("[红脸]", R.mipmap.emoji_tt_honglian));
        EMOJI_MAP_TT.put("[做鬼脸]", new Emoji("[做鬼脸]", R.mipmap.emoji_tt_zuoguilian));
        EMOJI_MAP_TT.put("[尬笑]", new Emoji("[尬笑]", R.mipmap.emoji_tt_gaxiao));
        EMOJI_MAP_TT.put("[汗]", new Emoji("[汗]", R.mipmap.emoji_tt_han));
        EMOJI_MAP_TT.put("[吐]", new Emoji("[吐]", R.mipmap.emoji_tt_tu));
        EMOJI_MAP_TT.put("[惊喜]", new Emoji("[惊喜]", R.mipmap.emoji_tt_jingxi));
        EMOJI_MAP_TT.put("[摸头]", new Emoji("[摸头]", R.mipmap.emoji_tt_motou));
        EMOJI_MAP_TT.put("[来看我]", new Emoji("[来看我]", R.mipmap.emoji_tt_laikanwo));
        EMOJI_MAP_TT.put("[委屈]", new Emoji("[委屈]", R.mipmap.emoji_tt_weiqu));
        EMOJI_MAP_TT.put("[舔屏]", new Emoji("[舔屏]", R.mipmap.emoji_tt_tianping));
        EMOJI_MAP_TT.put("[鄙视]", new Emoji("[鄙视]", R.mipmap.emoji_tt_bishi));
        EMOJI_MAP_TT.put("[飞吻]", new Emoji("[飞吻]", R.mipmap.emoji_tt_feiwen));
        EMOJI_MAP_TT.put("[紫薇别走]", new Emoji("[紫薇别走]", R.mipmap.emoji_tt_ziweibiezou));
        EMOJI_MAP_TT.put("[吐彩虹]", new Emoji("[吐彩虹]", R.mipmap.emoji_tt_tucaihong));
        EMOJI_MAP_TT.put("[听歌]", new Emoji("[听歌]", R.mipmap.emoji_tt_tingge));
        EMOJI_MAP_TT.put("[求抱抱]", new Emoji("[求抱抱]", R.mipmap.emoji_tt_qiubaobao));
        EMOJI_MAP_TT.put("[周冬雨的凝视]", new Emoji("[周冬雨的凝视]", R.mipmap.emoji_tt_zhoudongyudeningshi));
        EMOJI_MAP_TT.put("[马思纯的微笑]", new Emoji("[马思纯的微笑]", R.mipmap.emoji_tt_masichundeweixiao));
        EMOJI_MAP_TT.put("[敲打]", new Emoji("[敲打]", R.mipmap.emoji_tt_qiaoda));
        EMOJI_MAP_TT.put("[绿帽子]", new Emoji("[绿帽子]", R.mipmap.emoji_tt_lvmaozi));
        EMOJI_MAP_TT.put("[再见]", new Emoji("[再见]", R.mipmap.emoji_tt_zaijian));
        EMOJI_MAP_TT.put("[吃瓜群众]", new Emoji("[吃瓜群众]", R.mipmap.emoji_tt_chiguaqunzhong));
        EMOJI_MAP_TT.put("[强]", new Emoji("[强]", R.mipmap.emoji_tt_qiang));
        EMOJI_MAP_TT.put("[如花]", new Emoji("[如花]", R.mipmap.emoji_tt_ruhua));
        EMOJI_MAP_TT.put("[奋斗]", new Emoji("[奋斗]", R.mipmap.emoji_tt_fendou));
        EMOJI_MAP_TT.put("[闭嘴]", new Emoji("[闭嘴]", R.mipmap.emoji_tt__bizui));
        EMOJI_MAP_TT.put("[晕]", new Emoji("[晕]", R.mipmap.emoji_tt_yun));
        EMOJI_MAP_TT.put("[大哭]", new Emoji("[大哭]", R.mipmap.emoji_tt_daku));
        EMOJI_MAP_TT.put("[得意]", new Emoji("[得意]", R.mipmap.emoji_tt_deyi));
        EMOJI_MAP_TT.put("[互粉]", new Emoji("[互粉]", R.mipmap.emoji_tt_hufen));
        EMOJI_MAP_TT.put("[衰]", new Emoji("[衰]", R.mipmap.emoji_tt_shuai));
        EMOJI_MAP_TT.put("[黑脸]", new Emoji("[黑脸]", R.mipmap.emoji_tt_heilian));
        EMOJI_MAP_TT.put("[吐舌]", new Emoji("[吐舌]", R.mipmap.emoji_tt_tushe));
        EMOJI_MAP_TT.put("[看]", new Emoji("[看]", R.mipmap.emoji_tt_kan));
        EMOJI_MAP_TT.put("[白眼]", new Emoji("[白眼]", R.mipmap.emoji_tt_baiyan));
        EMOJI_MAP_TT.put("[呆无辜]", new Emoji("[呆无辜]", R.mipmap.emoji_tt_daiwugu));
        EMOJI_MAP_TT.put("[骷髅]", new Emoji("[骷髅]", R.mipmap.emoji_tt_kulou));
        EMOJI_MAP_TT.put("[熊吉]", new Emoji("[熊吉]", R.mipmap.emoji_tt_xiongji));
        EMOJI_MAP_TT.put("[不看]", new Emoji("[不看]", R.mipmap.emoji_tt_bukan));
        EMOJI_MAP_TT.put("[炸弹]", new Emoji("[炸弹]", R.mipmap.emoji_tt_zhatan));
        EMOJI_MAP_TT.put("[屎]", new Emoji("[屎]", R.mipmap.emoji_tt_shi));
        EMOJI_MAP_TT.put("[蛋糕]", new Emoji("[蛋糕]", R.mipmap.emoji_tt_dangao));
        EMOJI_MAP_TT.put("[礼物]", new Emoji("[礼物]", R.mipmap.emoji_tt_liwu));
        EMOJI_MAP_TT.put("[啤酒]", new Emoji("[啤酒]", R.mipmap.emoji_tt_pijiu));
        EMOJI_MAP_TT.put("[去污粉]", new Emoji("[去污粉]", R.mipmap.emoji_tt_quwufen));
        EMOJI_MAP_TT.put("[撒花]", new Emoji("[撒花]", R.mipmap.emoji_tt_sahua));
        EMOJI_MAP_TT.put("[伤心]", new Emoji("[伤心]", R.mipmap.emoji_tt_shangxin));
        EMOJI_MAP_TT.put("[心]", new Emoji("[心]", R.mipmap.emoji_tt_xin));
        EMOJI_MAP_TT.put("[刀]", new Emoji("[刀]", R.mipmap.emoji_tt_dao));
        EMOJI_MAP_TT.put("[kiss]", new Emoji("[kiss]", R.mipmap.emoji_tt_kiss));
        EMOJI_MAP_TT.put("[胡瓜]", new Emoji("[胡瓜]", R.mipmap.emoji_tt_hugua));
        EMOJI_MAP_TT.put("[左上]", new Emoji("[左上]", R.mipmap.emoji_tt_zuoshang));
        EMOJI_MAP_TT.put("[鼓掌]", new Emoji("[鼓掌]", R.mipmap.emoji_tt_guzhang));
        EMOJI_MAP_TT.put("[握手]", new Emoji("[握手]", R.mipmap.emoji_tt_woshou));
        EMOJI_MAP_TT.put("[比心]", new Emoji("[比心]", R.mipmap.emoji_tt__bixin));
        EMOJI_MAP_TT.put("[加油]", new Emoji("[加油]", R.mipmap.emoji_tt_jiayou));
        EMOJI_MAP_TT.put("[碰拳]", new Emoji("[碰拳]", R.mipmap.emoji_tt_pengquan));
        EMOJI_MAP_TT.put("[ok]", new Emoji("[ok]", R.mipmap.emoji_tt_ok));
        EMOJI_MAP_TT.put("[击掌]", new Emoji("[击掌]", R.mipmap.emoji_tt_jizhang));
        EMOJI_MAP_TT.put("[给力]", new Emoji("[给力]", R.mipmap.emoji_tt_geili));
        EMOJI_MAP_TT.put("[V5]", new Emoji("[V5]", R.mipmap.emoji_tt_v5));
        EMOJI_MAP_TT.put("[18禁]", new Emoji("[18禁]", R.mipmap.emoji_tt_18jin));
        EMOJI_MAP_TT.put("[666]", new Emoji("[666]", R.mipmap.emoji_tt_666));
        EMOJI_MAP_TT.put("[作者]", new Emoji("[作者]", R.mipmap.emoji_tt_author));
        EMOJI_MAP.putAll(EMOJI_MAP_TT);
    }

    /**
     * 根据text 获取表情，
     *
     * @param context
     * @param text
     */
    public static void getEmotionContent(Context context, Spannable text) {
        if (text == null) {
            return;
        }
        Resources res = CommonUtils.getResource();

        //查找 [xxx]
        String regexEmotion = "\\[[\u4e00-\u9fa5|\\w]+\\]";
        Pattern patternEmotion = Pattern.compile(regexEmotion);
        Matcher matcherEmotion = patternEmotion.matcher(text);
        CenteredImageSpan span;
        Integer imgRes;
        String key;
        int start;
        Emoji emoji;
        while (matcherEmotion.find()) {
            // 获取匹配到的具体字符
            key = matcherEmotion.group();
            // 匹配字符串的开始位置
            start = matcherEmotion.start();
            emoji = EMOJI_MAP.get(key);
            if (emoji == null) {
                continue;
            }
            imgRes = emoji.getIdRes();
            if (imgRes != null) {
                try {
                    span = new CenteredImageSpan(context, imgRes);
                    span.setMarginLeft(DisplayUtils.dip2px(1));
                    span.setMarginRight(DisplayUtils.dip2px(1));
                    text.setSpan(span, start, start + key.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                } catch (Exception e) {
                }
            }
        }
    }

}
